home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xalan.jar / org / apache / xalan / xslt / ElemElement.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-12  |  4.1 KB  |  101 lines

  1. package org.apache.xalan.xslt;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.net.MalformedURLException;
  6. import org.apache.xalan.xpath.xml.QName;
  7. import org.apache.xalan.xpath.xml.XMLParserLiaison;
  8. import org.w3c.dom.Node;
  9. import org.xml.sax.AttributeList;
  10. import org.xml.sax.SAXException;
  11.  
  12. public class ElemElement extends ElemUse {
  13.    public AVT m_name_avt;
  14.    public AVT m_namespace_avt;
  15.    private String m_prefix;
  16.  
  17.    public int getXSLToken() {
  18.       return 46;
  19.    }
  20.  
  21.    public ElemElement(XSLTEngineImpl var1, Stylesheet var2, String var3, AttributeList var4, int var5, int var6) throws SAXException {
  22.       super(var1, var2, var3, var4, var5, var6);
  23.       int var7 = var4.getLength();
  24.  
  25.       for(int var8 = 0; var8 < var7; ++var8) {
  26.          String var9 = var4.getName(var8);
  27.          if (var9.equals("name")) {
  28.             this.m_name_avt = new AVT(var9, var4.getType(var8), var4.getValue(var8), this, super.m_stylesheet, var1);
  29.          } else if (var9.equals("namespace")) {
  30.             this.m_namespace_avt = new AVT(var9, var4.getType(var8), var4.getValue(var8), this, super.m_stylesheet, var1);
  31.          } else if (!((ElemUse)this).processUseAttributeSets(var9, var4, var8) && !((ElemTemplateElement)this).processSpaceAttr(var9, var4, var8) && !((ElemTemplateElement)this).isAttrOK(var9, var4, var8)) {
  32.             var1.error(2, new Object[]{var3, var9});
  33.          }
  34.       }
  35.  
  36.       if (this.m_name_avt == null) {
  37.          var1.error(6, new Object[]{var3});
  38.       }
  39.  
  40.    }
  41.  
  42.    public void execute(XSLTEngineImpl var1, Node var2, Node var3, QName var4) throws XSLProcessorException, MalformedURLException, FileNotFoundException, IOException, SAXException {
  43.       XMLParserLiaison var5 = var1.getXMLProcessorLiaison();
  44.       String var6 = this.m_name_avt.evaluate(var5, var3, this, new StringBuffer());
  45.       int var7 = var6.indexOf(58);
  46.       String var8 = "";
  47.       if (var7 >= 0) {
  48.          String var9 = var6.substring(0, var7);
  49.  
  50.          try {
  51.             var8 = ((ElemTemplateElement)this).getNamespaceForPrefix(var9);
  52.             if (var7 + 1 == var6.length() || !((ElemTemplateElement)this).isValidNCName(var6.substring(var7 + 1))) {
  53.                var1.warn(24, new Object[]{var6});
  54.                var6 = null;
  55.             }
  56.          } catch (Exception var12) {
  57.             var8 = null;
  58.             var1.warn(22, new Object[]{var9});
  59.          }
  60.       } else if (var6.length() == 0 || !((ElemTemplateElement)this).isValidNCName(var6)) {
  61.          var1.warn(24, new Object[]{var6});
  62.          var6 = null;
  63.       }
  64.  
  65.       if (var6 != null && var8 != null) {
  66.          if (this.m_namespace_avt != null) {
  67.             String var13 = this.m_namespace_avt.evaluate(var5, var3, this, new StringBuffer());
  68.             if (var13 != null && var13.length() > 0) {
  69.                if (this.m_prefix == null) {
  70.                   String var10 = var1.getResultPrefixForNamespace(var13);
  71.                   if (var10 == null) {
  72.                      var10 = "ns" + String.valueOf(var1.m_uniqueNSValue);
  73.                      ++var1.m_uniqueNSValue;
  74.                      String var11 = "xmlns:" + var10;
  75.                      var1.addResultAttribute(var1.m_pendingAttributes, var11, var13);
  76.                   }
  77.  
  78.                   this.m_prefix = var10;
  79.                }
  80.  
  81.                if (var7 >= 0) {
  82.                   var6 = var6.substring(var7 + 1);
  83.                }
  84.  
  85.                var6 = this.m_prefix + ":" + var6;
  86.             }
  87.          }
  88.  
  89.          var1.m_resultTreeHandler.startElement(var6);
  90.       }
  91.  
  92.       super.execute(var1, var2, var3, var4);
  93.       ((ElemTemplateElement)this).processResultNS(var1);
  94.       ((ElemTemplateElement)this).executeChildren(var1, var2, var3, var4);
  95.       if (var6 != null && var8 != null) {
  96.          var1.m_resultTreeHandler.endElement(var6);
  97.       }
  98.  
  99.    }
  100. }
  101.